package com.wenjh.jdmzt.service.model;

import java.util.Date;

import android.content.Context;

import com.wenjh.jdmzt.AndroidKit;
import com.wenjh.jdmzt.util.SharedPreferencesUtil;

// 用户配置项
public class Preference {
	public static final String PUBLIC_PREFERENCE_FILE_NAME = "Preference";
	public static final String PUBLIC_PREFERENCE_KEY_ACCOUNT = "account";
	public static final String PUBLIC_PREFERENCE_KEY_SESSION = "sessoin";
	public static final String PUBLIC_PREFERENCE_KEY_USERID = "userid";

	public static final String USER_PREFERENCE_KEY_LASTREDRESS = "lasttime_redress_alarm";
	
	private String name = null;
	private Context context = null;
	private SharedPreferencesUtil p = null;
	
	/**
	 * 构建 Preference 对象。
	 * 
	 * @param context 
	 * @param name Preference 的名称，此名称将作为保存到存储设备的文件名称
	 */
	public Preference(Context context, String name) {
		this.name = name;
		this.context = context;
		p = SharedPreferencesUtil.getInstance(context, name);
	}
	
	/**
	 * 保存。所有内容。
	 */
	public void save() {
	}
	
	/**
	 * 保存一个其中一个属性。
	 */
	public void saveField(String key, Object value) {
		p.put(key, value);
	}
	
	/**
	 * 根据名称去解析一份配置文件，并返回据此构建的 Preference 对象。
	 * @param context
	 * @param name Preference 的名称 
	 * @return
	 */
	public static Preference parsePreference(Context context , String name) {
		Preference preference = new Preference(context, name);
		
		SharedPreferencesUtil p = preference.p;
		return preference;
	}
	
	
	/**
	 * 将配置初始化
	 */
	public void doInit() {
		Preference preference = new Preference(context, name);
		save();
		
		preference = null;
	}
	
	
	/**
	 * 获取当前登录用户的某一个配置项，需要注意的是，CurrentUser 不能是 null
	 * @param context
	 * @param key
	 * @param defaultValue
	 * @return
	 */
	public static <T> T getUserValue(Context context, String key, T defaultValue) {
		if(AndroidKit.getCurrentUser() == null) {
			return defaultValue;
		}
		SharedPreferencesUtil pu = SharedPreferencesUtil.getInstance(context, AndroidKit.getCurrentUser().id);
		return (T)pu.get(key, defaultValue);
	}
	
	
	public static Date getTime(Context context, String key, Date defaultValue) {
		if(AndroidKit.getCurrentUser() == null) {
			return defaultValue;
		}
		
		try {
			SharedPreferencesUtil pu = SharedPreferencesUtil.getInstance(context, AndroidKit.getCurrentUser().id);
			long value = pu.get(key, 0L);
			if(value > 0) {
				return new Date(value);
			}
		} catch (Exception e) {
		}
		
		return defaultValue;
	}
	
	
	public static void saveTime(Context context, String key, Date value) {
		if(AndroidKit.getCurrentUser() == null) {
			return;
		}
		
		try {
			SharedPreferencesUtil pu = SharedPreferencesUtil.getInstance(context, AndroidKit.getCurrentUser().id);
			pu.put(key, value == null ? 0L : value.getTime());
		} catch (Exception e) {
		}
	}
	
	
	/**
	 * 保存一个当前登录用户的配置项
	 * @param context
	 * @param key
	 * @param value
	 */
	public static void saveUserValue(Context context, String key, Object value) {
		if(AndroidKit.getCurrentUser() == null) {
			return;
		}
		
		SharedPreferencesUtil pu = SharedPreferencesUtil.getInstance(context, AndroidKit.getCurrentUser().id);
		pu.put(key, value);
	}
	
}
